<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package.Mapper}.${table.mapperName}">

    <#if enableCache>
        <!-- 开启二级缓存 -->
        <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
    </#if>
    <#if baseResultMap>
        <!-- 通用查询映射结果 -->
        <resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
            <#list table.fields as field>
                <#if field.keyFlag><#--生成主键排在第一位-->
                    <id column="${field.name}" property="${field.propertyName}"/>
                </#if>
            </#list>
            <#list table.commonFields as field><#--生成公共字段 -->
                <result column="${field.name}" property="${field.propertyName}"/>
            </#list>
            <#list table.fields as field>
                <#if !field.keyFlag><#--生成普通字段 -->
                    <result column="${field.name}" property="${field.propertyName}"/>
                </#if>
            </#list>
        </resultMap>

    </#if>
    <#if baseColumnList>
        <!-- 通用查询结果列 -->
        <sql id="Base_Column_List">
            <#list table.commonFields as field>
                ${field.name},
            </#list>
            ${table.fieldNames}
        </sql>
    </#if>


    <!-- 查询列表 -->
    <select id="getList" resultType="${package.Entity}.${entity}">
        select
        <include refid="Base_Column_List"/>
        from ${table.name}
        <where>
            <#list table.fields as field>
                <#if !field.keyFlag>
                    <if test="${field.propertyName}!= null <#if field.propertyType=="String">and ${field.propertyName} != ''</#if>"><#if field_index!=1>and </#if>${field.name}
                        <#if field.propertyType=="String">like concat('%',${r'#{'}${field.propertyName}${r',jdbcType=VARCHAR}'},'%')<#else>= ${r'#{'}${field.propertyName}${r'}'}</#if></if>
                </#if>
            </#list>
        </where>
        order by id desc
        <if test="currentPage!= null and pageSize!=null">LIMIT ${r'#{'}currentPage${r'}'},${r'#{'}pageSize${r'}'}</if>
    </select>
    <!--  查询列表总数-->
    <select id="count" resultType="java.lang.Long">
        select count(1)
        from ${table.name}
        <where>
            <#list table.fields as field>
                <#if !field.keyFlag>
                    <if test="${field.propertyName}!= null <#if field.propertyType=="String">and ${field.propertyName} != ''</#if>"><#if field_index!=1>and </#if>${field.name}
                        <#if field.propertyType=="String">like concat('%',${r'#{'}${field.propertyName}${r',jdbcType=VARCHAR}'},'%')<#else>= ${r'#{'}${field.propertyName}${r'}'}</#if></if>
                </#if>
            </#list>
        </where>
    </select>
    <!-- 根据 ID 查询 -->
    <select id="getById" resultType="${package.Entity}.${entity}">
        select
        <include refid="Base_Column_List"/>
        from ${table.name} where id = ${r'#{id}'}
    </select>
    <!-- 新增 -->
    <insert id="add">
        insert into ${table.name}
        (<#list table.fields as field><#if !field.keyFlag><#if field_index!=1>,</#if>${field.name}</#if></#list>) values
        (<#list table.fields as field><#if !field.keyFlag><#if field_index!=1>,</#if>${r'#{'}${field.propertyName}${r'}'}</#if></#list>
        )
    </insert>

    <!-- 修改 -->
    <update id="update">
        update ${table.name}
        <set>
            <#list table.fields as field>
                <#if !field.keyFlag>
                    <if test="${field.propertyName}!= null <#if field.propertyType=="String">and ${field.propertyName} != ''</#if>"><#if field_index!=1>,</#if>${field.name}
                        =${r'#{'}${field.propertyName}${r'}'}</if>
                </#if>
            </#list>
        </set>
        where id = ${r'#{id}'}
    </update>
    <!-- 根据 ID 删除 -->
    <delete id="del" parameterType="int">
        delete from ${table.name} where id = ${r'#{id}'}
    </delete>


</mapper>